package cn.setting;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import lombok.Data;

import java.awt.*;
import java.io.Serializable;
import java.util.Hashtable;
import java.util.Map;
/**
 * 二维码相关参数设置
 * @author xbsoft2
 */
@Data
public final class QRCodeSetting implements Serializable {
  public static final long serialVersionUID = 1L;
  public QRCodeSetting() {
    width = 300;
    height = 300;
    contents = "二维码内容";
    onColor  = new Color(0,0,0).getRGB();
    offColor = new Color(255,255,255).getRGB();
    x = 0;
    y = 0;
    barcodeFormat = BarcodeFormat.QR_CODE;
    Hashtable<EncodeHintType, Object> hints = new Hashtable<>();
    // 指定纠错等级
    hints.put(EncodeHintType.PDF417_DIMENSIONS, ErrorCorrectionLevel.L);
    // 指定编码格式
    hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
    // 边缘
    hints.put(EncodeHintType.MARGIN, 1);
    this.hints = hints;
    logo = "logo.png";
    enableLogo = Boolean.FALSE;
  }
  /**
   * 二维码宽
   */
  private Integer width;
  /**
   * 二维码高
   */
  private Integer height;
  /**
   * 二维码内容
   */
  private String contents;
  /**
   * 二维码前景色颜色
   */
  private Integer onColor;
  /**
   * 二维码背景色
   */
  private Integer offColor;

  /**
   * 二维码在画布上开始X坐标
   */
  private Integer x;

  /**
   * 二维码在画布上的开始Y坐标
   */
  private Integer y;
  /**
   * 条形码格式
   * 参数值:
   * @see BarcodeFormat
   */
  private BarcodeFormat barcodeFormat;
  /**
   * 条形码 其他参数设置
   * 可以设置的Key看:
   * @see EncodeHintType
   */
  private Map<EncodeHintType, Object> hints;
  /**
   * logo 路径
   */
  private String logo;
  /**
   * 是否启用logo
   */
  private Boolean enableLogo;
}
